<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // prtotype 原型

        // 父类

        function Person(name, age) {
            this.name = name;
            this.age = age;
        }

        Person.prototype.sleep = function () {
            console.log('睡觉');
        }

        //子类
        function Student(gender,name) {
            this.gender = gender;
            this.name = name;
        }

        Student.prototype = new Person('张三', 18);
        // 给子类的原型赋值一个 父类的实例

        // student想继承父类

        const s1 = new Student('男','李四');
        console.log(s1.age);
        s1.sleep()
        console.log(s1.name);


        /* 
            const p = new Person('张三', 18);
            Stundent.prototype = p;

            子类的原型就是 {name:'zhangsan',age:18}

            const s1 = new Student('男','李四');
            s1.__proto__ = Student.prototype;
            s1.__proto__ = {name:'zhangsan',age:18};

            const(s1.age);  
            // 先从自己身上找age 找到了就用自己的停止查找
            // 如果自己身上没有age 那么就去自己的__proto__上找

            // s1没有age只能去__proto__上找 
            // __proto__上找到了age就用__proto__上的age

            // console.log(s1.name);
            // 自己有 用自己的 


            // 当我们去访问 s1.sleep的时候
            自己身上没有sleep 去__proto__上找
            __proto__上找到了sleep 就用__proto__上的sleep
            // 找不到 就到构造函数的原型上查找  
            // Student.prototype = {name:'zhangsan',age:18};
           // 依然没有 
            // Student.prototype.__proto__ 
            // 也就是 {name:'zhangsan',age:18}.__proto__ 
            // 它的__proto__是Person

            Student.prototype.__proto__  = Person.prototype


            Person.prototype 有一个sleep 这里就找到了sleep
            停止查找 

        */

        // 原
    </script>
</body>
</html>